﻿using ReactiveGraph.Core;
using ReactiveGraph.Extensions.Rules.Core;

namespace ReactiveGraph.Extensions.Rules.Event
{
    public interface IEventRuleDeclaration : IDeclaration<NodeEvent>
    {
        IEventRuleAction PropertyChanged(IProperty property);
        IEventRuleNodeAction DescendantAdded();
        IEventRuleNodeAction DescendantRemoved();
        IEventRuleNodeAction ChildAdded(IReactiveNode parent);
        IEventRuleNodeAction ChildRemoved(IReactiveNode parent);
    }
}